git 강의 요약

'Git, GitLab의 이해와 실무 활용' 란 강의를 듣고 정리

$git init

  • git의 핵심폴더인 .git 폴더 생성됨
  • git을 통해 해당 프로젝트에서 변경되는 파일들에 대한 추적/관리 가능
    master라는 기본 브런치 생성됨

원격저장소 연결

$ git clone 연결할 git주소
  • 1) clone 하기​
$ git remote add origin 연결할 git주소
  • 2) 로컬저장소 생성 -> 초기화(git init) -> 원격저장소 연결 (git remote add)
$ git remote -v
  • 원격저장소 상세정보 확인

작업디렉토리의 파일 상태
1) Untracked
: 변경점을 발생했으나 git에 의해 관리되지 않은 파일, 단 한번도 staging area에 포함되지 않은 파일

$ git add TestService.java
  • staging area에 추가
$ git status

On branch master​
No commits yet​
Changes to be committed:
(use "git rm - cached …" to unstage)
new file: TestService.java​​

$ git commit
$ git commit -m ""

로컬저장소에 영구 저장

$ git commit - amend

마지막 반영한 커밋메시지 수정하고 싶을때

$ git revert commitID

원복
​​

$ git pull origin master

원격저장소에 반영

$ git push origin master

원격저장소의 내용이 로컬저장소에 먼저 반영(update)​
​​

브랜치 branch
branch는 일종의 포인터, 커밋지점을 가리킨다.

$ git branch

현재 브랜치를 확인하는 명령어

$ git checkout feature-login

브랜치 변경(이동)

$ git log - all - graph
$ git checkout -b issue

브랜치 생성과 동시에 이동

$ git merge issue (master와 병합)

브랜치 병합
: 기준이 되는 브랜치로 이동해서 병합해야 한다!
​- 3-Way Merge 방식으로 병합한다

$ git branch -d issue

브랜치 삭제

$ git branch -v

$ git mergetool

브랜치 충돌(conflict) 해결하기
1) 직접 merge하기
2) 툴사용하기


tag : 특정 시점의 소스코드 정보를 기록함

$git tag [태그명]

lightweight 태그 생성

$git tag -a [태그명] -m [태그메시지]

annotated 태그 생성

$git tag -a v1.0 -m "Implemented login feature"
$git log

commit 56d68d751873b5a68216e1278fef7de78c608958 (HEAD -> master, tag: v1.0, origin/master)

$git show v1.0

태그 상세정보 확인하기

$git log - online

태깅하고자 하는 커밋의 ID값 확인

$git tag -a v0.1 24b56ff -m "fix issue number-1"

커밋ID값을 인자로 태깅하기

GitFlow 모델

1) feature
: 기능을 개발하는 브랜치
- 기능개발 완료 or 스프린트 주기 종료시, develop 브랜치로 merge후 삭제됨

2) release
: 배포준비 브랜치
- 배포가능 상태가 되면 master 브랜치로 병합 & tag명시
- 이슈에 대한 수정사항은 반드시 develop 브랜치에 병합해야 함

3) hotfixs
: 긴급용(장애 및 버그발생 대응) 브랜치
- master 브랜치로부터 분기, 이슈에 대한 수정후 master, develop 브랜치에 최종 반영되어야 함

feature

$git flow feature start [개발할 기능명]
$ git branch

develop

  • feature/login
    master

viLoginService.javavi LoginService.javagit add LoginService.java
git commit -m "Commit#1 on feature/login branch"git log

$git flow feature finish [개발할 기능명]

기능개발 완료

Fast-forward
gitflow_test/LoginService.java | 1 +
1 file changed, 1 insertion(+)
create mode 100644 gitflow_test/LoginService.java
Deleted branch feature/login (was 694c031).
Summary of actions:

  • The feature branch 'feature/login' was merged into 'develop'
  • Feature branch 'feature/login' has been locally deleted
  • You are now on branch 'develop'

release

$git flow release start [버전명]
$ git branch

develop
master

  • release/1.0
$git flow release finish [버전명]

Switched to branch 'master'
Merge made by the 'recursive' strategy.
gitflow_test/LoginService.java | 1 +
gitflow_test/MainService.java | 2 ++
2 files changed, 3 insertions(+)
create mode 100644 gitflow_test/LoginService.java
create mode 100644 gitflow_test/MainService.java
Already on 'master'
Switched to branch 'develop'
Merge made by the 'recursive' strategy.
gitflow_test/MainService.java | 1 +
1 file changed, 1 insertion(+)
Deleted branch release/1.0 (was af83558).
Summary of actions:

  • Release branch 'release/1.0' has been merged into 'master'
  • The release was tagged '1.0'
  • Release tag '1.0' has been back-merged into 'develop'
  • Release branch 'release/1.0' has been locally deleted
  • You are now on branch 'develop'
$ git log - oneline

a3dd93a (HEAD -> develop) Merge tag '1.0' into develop
7e90a02 (tag: 1.0, master) Merge branch 'release/1.0'
af83558 Commit#3 on release/1.0 branch
668d973 Commit#2 on develop branch
694c031 Commit#1 on feature/login branch
62f2db4 A Developer : Commit 1 for AService

hotfix

$git flow hotfix start issue#1
$git flow hotfix finish issue#1

Switched to branch 'master'
Merge made by the 'recursive' strategy.
gitflow_test/MainService.java | 1 +
1 file changed, 1 insertion(+)
Switched to branch 'develop'
Merge made by the 'recursive' strategy.
gitflow_test/MainService.java | 1 +
1 file changed, 1 insertion(+)
Deleted branch hotfix/issue#1 (was 7242e4c).
Summary of actions:

  • Hotfix branch 'hotfix/issue#1' has been merged into 'master'
  • The hotfix was tagged 'issue#1'
  • Hotfix tag 'issue#1' has been back-merged into 'develop'
  • Hotfix branch 'hotfix/issue#1' has been locally deleted
  • You are now on branch 'develop'

좋은 웹페이지 즐겨찾기